package br.ufpe.cin.ip.biblioteca.tad;

import br.ufpe.cin.ip.biblioteca.entidades.Funcionario;
import br.ufpe.cin.ip.biblioteca.iterator.IteratorFuncionario;
import br.ufpe.cin.ip.biblioteca.iterator.IteratorFuncionarioLista;

public class ListaFuncionario {
	private Funcionario funcionario;
	private ListaFuncionario proximo;
	
	public ListaFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
		this.proximo = null;
	}
	
	public void inserir(Funcionario funcionario) {
		if(this.proximo==null) {
			this.proximo = new ListaFuncionario(funcionario);
		} else {
			this.proximo.inserir(funcionario);
		}
	}
	
	public void remover(Funcionario funcionario) {
		if(this.funcionario!=null) {
			if(this.funcionario.equals(funcionario)) {
				this.funcionario = this.proximo.funcionario;
				this.proximo = this.proximo.proximo;
			} else {
				this.proximo.remover(funcionario);
			}
		}
	}
	
	public IteratorFuncionario getIterator() {
		return new IteratorFuncionarioLista(this);
	}
	
	public Funcionario getFuncionario() {
		return this.funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public ListaFuncionario getProximo() {
		return this.proximo;
	}

	public void setProximo(ListaFuncionario proximo) {
		this.proximo = proximo;
	}
}
